import request from '@/utils/request'

// 评论类型
export interface Comment {
  id?: number
  postId: number
  parentId?: number
  content: string
  userId: number
  username?: string
  userAvatar?: string
  createTime?: string
  updateTime?: string
  likes?: number
  replies?: Comment[]
}

// 创建评论时的数据类型
export interface CommentData {
  postId: number
  parentId?: number | null
  content: string
  userId: number
}

// 评论查询参数
export interface CommentQueryParams {
  postId: number
  pageNum?: number
  pageSize?: number
}

// 基础路径
const baseUrl = '/api/post/comment'

/**
 * 获取指定帖子的评论列表
 * @param params 查询参数
 * @returns 评论列表
 */
export function getCommentsByPostId(params: CommentQueryParams) {
  return request({
    url: `${baseUrl}/post/${params.postId}`,
    method: 'get'
  })
}

/**
 * 获取帖子评论，通过帖子ID（简化版，向后兼容）
 * @param postId 帖子ID
 * @returns 评论列表
 */
export function getPostComments(postId: string | number) {
  return request({
    url: `${baseUrl}/post/${postId}`,
    method: 'get'
  })
}

/**
 * 添加评论
 * @param data 评论数据
 * @returns 添加结果
 */
export function addComment(data: Comment) {
  return request({
    url: `${baseUrl}/create`,
    method: 'post',
    data
  })
}

/**
 * 创建评论（别名，向后兼容）
 * @param data 评论数据
 * @returns 添加结果
 */
export function createComment(data: CommentData) {
  return addComment(data as Comment)
}

/**
 * 删除评论
 * @param id 评论ID
 * @returns 删除结果
 */
export function deleteComment(id: number) {
  return request({
    url: `${baseUrl}/delete/${id}`,
    method: 'delete'
  })
}

/**
 * 点赞评论
 * @param id 评论ID
 * @param userId 用户ID
 * @returns 点赞结果 true-点赞成功 false-取消点赞
 */
export function likeComment(id: number, userId?: number) {
  return request({
    url: `${baseUrl}/comment/${id}/like`,
    method: 'post',
    params: { userId }
  })
}

/**
 * 获取评论点赞状态
 * @param id 评论ID
 * @param userId 用户ID
 * @returns 是否已点赞
 */
export function getCommentLikeStatus(id: number, userId?: number) {
  return request({
    url: `${baseUrl}/comment/${id}/like/status`,
    method: 'get',
    params: { userId }
  })
}

/**
 * 获取用户评论列表
 * @param userId 用户ID
 * @param params 分页参数
 * @returns 评论列表
 */
export function getUserComments(userId: number, params?: { pageNum?: number, pageSize?: number }) {
  return request({
    url: `${baseUrl}/user/${userId}`,
    method: 'get',
    params
  })
} 